// this 隐式绑定
function foo() {
    // console.log(this);
    console.log( this.a );
}
var obj = {
    a: 2,
    foo: foo
};
// this 绑定到了 obj 上
obj.foo(); // 2

function doFoo(fn) {
    // fn 其实引用的是 foo
    fn(); // <-- 调用位置！
}

// var a 挂载在 window 上，用前端打开才能看到
var a ='oops, global'; // a 是全局对象的属性
doFoo( obj.foo ); // "oops, global" 